package vip.xiaonuo.biz.modular.goods.result;

import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import vip.xiaonuo.biz.modular.goods.entity.BizGoodsCheck;

import javax.persistence.Id;
import java.math.BigDecimal;
import java.util.List;

/**
 * @author 墨塵
 * @since 2022/11/18
 */
@Data
@ApiModel(value = "物品详情", description = "物品详情")
public class ClientGoodsDetailResult {
    @Id
    @ApiModelProperty(value = "ID")
    private String goodsId;

    @ApiModelProperty(value = "物品编号")
    private String goodsCode;

    @ApiModelProperty(value = "物品名称")
    private String goodsName;

    @ApiModelProperty(value = "当前组柜id")
    private String curCabinetGroupId;

    @ApiModelProperty(value = "当前组柜")
    private String curCabinetGroupName;

    @ApiModelProperty(value = "当前组柜code")
    private String curCabinetGroupCode;

    @ApiModelProperty(value = "当前柜子id")
    private String curCabinetId;

    @ApiModelProperty(value = "当前柜子")
    private String curCabinetName;

    @ApiModelProperty(value = "当前柜子code")
    private String curCabinetCode;

    @ApiModelProperty(value = "当前柜门id")
    private String curCabinetDoorId;

    @ApiModelProperty(value = "当前柜门")
    private String curCabinetDoorName;

    @ApiModelProperty(value = "当前柜门Code")
    private String curCabinetDoorCode;

    @ApiModelProperty(value = "当前柜子地点-地区")
    private String curAreaName;

    @ApiModelProperty(value = "当前柜子地点-楼栋")
    private String curBuildingName;

    @ApiModelProperty(value = "当前柜子地点-房间")
    private String curRoomName;

    @ApiModelProperty(value = "存放组柜ID")
    @JsonIgnore
    private String bioCabinetGroupId;

    @ApiModelProperty(value = "存放组柜")
    private String bioCabinetGroupName;

    @ApiModelProperty(value = "存放组柜code")
    private String bioCabinetGroupCode;

    @ApiModelProperty(value = "存放柜子ID")
    private String bioCabinetId;

    @ApiModelProperty(value = "存放柜子")
    private String bioCabinetName;

    @ApiModelProperty(value = "存放柜子code")
    private String bioCabinetCode;

    @ApiModelProperty(value = "存放柜门ID")
    private String bioCabinetDoorId;

    @ApiModelProperty(value = "存放柜门")
    private String bioCabinetDoorName;

    @ApiModelProperty(value = "存放柜门code")
    private String bioCabinetDoorCode;

    @ApiModelProperty(value = "存放柜子地点-地区")
    private String bioAreaName;

    @ApiModelProperty(value = "存放当前柜子地点-楼栋")
    private String bioBuildingName;

    @ApiModelProperty(value = "存放当前柜子地点-房间ID")
    private String bioRoomName;

    @ApiModelProperty(value = "状态")
    private String stateText;

    @ApiModelProperty(value = "状态 0-已报废 1-启用 2-维修中")
    private Integer state;

    @ApiModelProperty(value = "离柜标识 0-在柜 1-离柜（当”是否在柜“为“在柜”时，显示“当前柜门”和当前柜子的地点；为“离柜”时，显示“存放柜门”和存放柜的地点）")
    private Integer leaveFlag;

    @ApiModelProperty(value = "物品图片")
    private String goodsImg;

    @ApiModelProperty(value = "存放一致 0-否 1-是")
    private Integer consistentStorage;

    @ApiModelProperty(value = "是否独立权限", hidden = true)
    @JsonIgnore
    private Boolean separatedPermission;

    @ApiModelProperty(value = "是否拥有借用权，状态是“启用”的仪器，根据用户对其存放柜门如果有权限，则显示“拥有借用权”", hidden = true)
    private Boolean hasPerm;

//    @ApiModelProperty(value = "物品标签")
//    private String goodsLabels;

    @ApiModelProperty(value = "物品描述")
    private String goodsDes;

    @ApiModelProperty(value = "注意事项")
    private String attention;

    @ApiModelProperty(value = "备注")
    private String remarks;

    @ApiModelProperty(value = "最长离柜时限")
    private Integer maxLimitLeave;

    @ApiModelProperty(value = "最长离柜时限单位 1-分钟 2-小时 3-天")
    private Integer maxLimitLeaveUnit;

    @ApiModelProperty(value = "物品管理员")
    private List<String> adminList;

    @ApiModelProperty(value = "隶属组织")
    private String orgName;

    @ApiModelProperty(value = "检查项")
    private List<ClientGoodsCheckResult> checkItems;

    @ApiModelProperty(value = "待处理异常数量")
    private Integer exceptionCount;

    @ApiModelProperty(value = "物品分类名称")
    private String goodsCategoryName;

    @ApiModelProperty(value = "物品标签，多个以逗号隔开")
    private String goodsLabelList;

    @ApiModelProperty(value = "物品型号")
    private String goodsModel;

    private Integer goodsType;

    /** 初始重量 */
    @ApiModelProperty(value = "初始重量")
    private BigDecimal reagentInitWeight;

    /** 初始容量 */
    @ApiModelProperty(value = "初始容量")
    private BigDecimal reagentInitVolume;

    /**
     * 可用重量
     */
    @ApiModelProperty(value = "可用重量")
    private BigDecimal reagentAvlWeight;

    /**
     * 可用容量
     */
    @ApiModelProperty(value = "可用容量")
    private BigDecimal reagentAvlVolume;

    /**
     * CAS编码
     */
    @ApiModelProperty(value = "CAS编码")
    private String reagentCasNo;

    private String reagentClassId; // 试剂存放类型，字典值

    private String reagentClassName;

    /** 试剂形态 */
    @ApiModelProperty(value = "试剂形态", position = 53)
    private String reagentFormId;

    private String reagentFormName;

    /** 试剂密度(单位:g/ml) */
    @ApiModelProperty(value = "试剂密度(单位:g/ml)", position = 55)
    private BigDecimal reagentDensity;

    /** 氧化还原类型 */
    @ApiModelProperty(value = "氧化还原类型", position = 56)
    private String reagentRedoxClassId;

    private String reagentRedoxClassName;

    /** 试剂瓶类型 */
    @ApiModelProperty(value = "试剂瓶类型", position = 57)
    private String reagentBottleType;

    private String reagentBottleTypeName;

    /** 有效期 */
    @ApiModelProperty(value = "有效期", position = 51)
    private String reagentValidityPeriod;

    /** 取还是否需要称重 0-否 1-是 */
    @ApiModelProperty(value = "取还是否需要称重 0-否 1-是", position = 63)
    private String reagentWeighNeedFlag;

    /** 误差最大值(单位:g) */
    @ApiModelProperty(value = "误差最大值(单位:g)", position = 64)
    private BigDecimal reagentMaxErrorValue;

    @ApiModelProperty(value = "入柜标识 0-否 1-是")
    private Integer enterFlag;

    @ApiModelProperty(value = "支持扫码借还 0-否 1-是")
    private Integer ssbrFlag;

}
